Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[C++][Pytanie] Pomoc w c++ (losowanie liczb)


Rekomendowane odpowiedzi

Opublikowano

Witam all.

Jestem dopiero poczatkujaca osoba ktora dopiero zaczyna zabawe z programowanie, ale wiekszosc podstaw juz znam i wiem mniej wiecej co do czego jest i po co. Od mojego nauczyciela od informatyki (nie jestem na kierunku informatycznym) dostalem bowiem dodatkowa prace do zrobienia ale nie wiem jak zrobic w niej jedna rzecz. Jesli moglby mi ktos wytlumaczyc jak moglbym to zrobic bylbym wdzieczny.

 

A teraz przejdzmy do sedna sprawy, natomiast chodzi o losowanie liczb. Wiem jak wylosowac zupelnie przypadkowe liczby itp, ale czy istnieje mozliwosc losowania liczb z danego zbioru? Chodzi konkretnie o to zebym mogl losowac spomiędzy liczb 1, 2 i 3 a nie wiem jak mam sie za bardzo do tego zabrac. Bo chodzi o to ze program ma losowac jedna z tych liczb i do kazdej z nich bedzie przypisana inna funkcja.

Jesli ktos bylby w stanie wytlumaczyc mi jak bym mogl to zrobic bylbym wdzieczny.

Z gory dzieki.

Opublikowano

Co do 'przypisywania funkcjom numerków' można też użyć tablicy pointerów na funkcje lub funktorów*, jeśli przyjmowane parametry są takie same dla każdej funkcji.

 

*Przy wykorzystaniu funktorów nawet niekonieczne jest to założenie, ale z obejściem byłoby troche zawile.

Opublikowano

up2

dzieki za pomoc bede probowal

 

up

wlaśnie mialem cos o tablicach i widzialem pare artykułów na necie ale własnie nie moge pojąc jak to moge wykorzystac :)

Opublikowano

np tak

#include <iostream>

using namespace std;
class A
{
public:
    virtual int operator()(int a, int  const = 0;
};
class B : public A
{
public:
    virtual int operator()(int a, int  const
    {
        return a + b;
    }
};
class C : public A
{
public:
    virtual int operator()(int a, int  const
    {
        return a * b;
    }
};



int main()
{
    A* tab[2] = {new B, new C};
    int a, b;
    int x;
    cin >> a >> b;
    cin >> x; //0 lub 1
    cout << (*tab[x])(a, ;
    return 0;
}

ale to jaką możliwość wybrać zależy ściśle od problemu. Jeśli te funkcje są jakieś małe, jest ich mało i nie będziesz musiał dodawać kolejnych opcji to switch jest dobrym rozwiązaniem.
Opublikowano

Wlaśnie zastosowałem switcha i wyglada to tak:

 

#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
int main(){
int potion,number_one=0,number_two=0,number_three=0;
cout<<"Losowac liczbe?";
char choice;
cin>>choice;
switch(choice){
case 't':
srand (time(NULL));
do{
potion=rand()%3+1;
switch(potion){
case 1:
cout<<"Liczba: 1\n";
number_one=number_one+1;
break;
case 2:
cout<<"Liczba: 2\n";
number_two=number_two+1;
break;
case 3:
cout<<"Liczba: 3\n";
number_three=number_three+1;
}
}while(number_three!=1);
break;
case 'n':
return 0;
}
cout<<"Ilosc wylosowanie 1: "<<number_one<<"\n";
cout<<"Ilosc wylosowanych 2: "<<number_two<<"\n";
cout<<"Liczba 3 moze zostac wylosowana tylko jeden raz.";
}

 

Wiem ze to nie jest zrobione profesjonalnie, ale zrobilem to wedlug moich umiejetnisci :)

Opublikowano

w tym przypadku można to zrobić zupełnie inaczej.

int number[3] = {};

int los = rand()%3;

cout << "Liczba " << los;

++number[los];

schludniejsze i łatwiej dodać kolejne

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...